"""
丰饶之间任务模块
实现丰饶之间副本的自动化任务
"""

import time
from loguru import logger
from .skill_manager import SkillManager

class FengraoTask:
    def __init__(self, game_automation):
        """
        初始化丰饶之间任务
        
        Args:
            game_automation: GameAutomation 实例，用于执行基础操作
        """
        self.game = game_automation
        self.skill_manager = SkillManager()

    def check_battle_end(self):
        """检查战斗是否结束"""
        reward_pos, _, _, _ = self.game.find_image_on_screen("templates/fengrao/reward_button.png", confidence=0.7)
        if reward_pos:
            logger.info("检测到战斗结束，准备领奖")
            # 点击返回按钮
            if not self.game.click_image_center("templates/fengrao/back_button.png", confidence=0.7):
                logger.error("未找到返回按钮，请检查")
                return True  # 即使未找到返回按钮，也认为战斗结束
            # 等待返回主页
            time.sleep(2)
            # 检测是否已返回主页（检测丰饶之间文字）
            mainpage_pos, _, _, _ = self.game.find_image_on_screen("templates/fengrao/fengrao_text.png", confidence=0.7)
            if mainpage_pos:
                logger.info("已返回主页，任务完成")
            else:
                logger.warning("未检测到主页面，请检查")
            return True
        mainpage_pos, _, _, _ = self.game.find_image_on_screen("templates/fengrao/fengrao_text.png", confidence=0.7)
        if mainpage_pos:
            logger.warning("检测到主页面入口，战斗失败或已退出，跳出循环")
            return True
        return False

    def execute(self):
        """执行丰饶之间任务"""
        try:
            logger.info("开始执行丰饶之间任务")
            
            # 首先激活游戏窗口
            if not self.game.activate_game_window():
                logger.error("无法激活游戏窗口")
                return False
                
            # 1. 查找并点击丰饶之间入口
            if not self.game.click_image_center("templates/fengrao/fengrao_text.png", confidence=0.7):
                logger.error("未找到丰饶之间入口")
                return False
            logger.info("找到并点击丰饶之间入口")
            
            # 等待加载
            time.sleep(2)
            
            # 2. 查找并点击开始按钮
            if not self.game.click_image_center("templates/fengrao/start_button.png", confidence=0.7):
                logger.error("未找到开始按钮")
                return False
            logger.info("点击开始按钮")
            
            # 3. 等待战斗开始
            time.sleep(2)
            
            # 4. 使用技能管理器执行战斗循环
            battle_success = self.skill_manager.combat_loop(
                duration=120,  # 最大战斗时长（秒）
                check_interval=2,  # 检查间隔（秒）
                check_callback=self.check_battle_end  # 检查战斗是否结束的回调函数
            )
            
            if not battle_success:
                logger.error("战斗未正常结束")
                return False
            
            # 5. 等待战斗结束
            time.sleep(3)  # 可适当等待收尾动画
            
            # 6. 查找并点击领取奖励按钮
            if not self.game.click_image_center("templates/fengrao/reward_button.png", confidence=0.7):
                logger.error("未找到奖励按钮")
                return False
            logger.info("领取奖励成功")
            
            logger.info("丰饶之间任务完成")
            return True
            
        except Exception as e:
            logger.error(f"执行丰饶之间任务时出错: {str(e)}")
            return False 